package org.langqiao.algorithm.recursion;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class IntDivision {

	public static void main(String[] args) {
		int n=6;
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		try {
			String str = br.readLine();
			n = Integer.parseInt(str);
		} catch (IOException e) {
			e.printStackTrace();
		}
		int last;
		//控制行的输出，总共输出6行
		for(int i=n;i>0;i--) {
			last=n-i;
			//输出第一行6
			if(last==0) {
				System.out.println(i);
				continue;//语句继续执行，跳出if语句
			}
			find(i+"",last,i);//调用函数find
			System.out.println();//控制换行，输出一行后就换行
		}
	}
	
	public static void find(String str,int last,int max) {
		//函数类型为空，return语句返回为空
		if(last < 0)
			return;
		//第一行输出，输出本身
		if(last == 0)
			System.out.print(str+";");
		for(int i = max;i > 0;i--) {
			//递归调用find方法
			find(str+"+"+i,last-i,i);
		}
	}
}
